<?php
require_once 'BaseController.php';
/**
 * 物件一覧 一覧部分クラス<br />
 *
 * @package    apamanshop
 * @author     SS永田
 * @copyright  コピーライト(要確認)
 */
class Rstobi_RstlistController extends Rstobi_BaseController
{

	public function indexAction()
	{
		// SEO対象かチェック
		$this->_is_seo = $this->isSeoTargetForList($this->_params);
		if ($this->_is_seo)
		{
			// SEOテキストをセット
			$meta_data = Apm_Bukkenurl::setCommonMeta($this->_params['SrhKbn'], $this->_params);
			$this->_data['block_title'] = $meta_data['page_title'].' 物件一覧';
			$this->_data['block_text']  = Apm_Config_Search::SEOSTR_AREA.'{の}'.Apm_Config_Search::SEOSTR_KODAWARI.'{な}'
										 .Apm_Config_Search::SEOSTR_TYPE.'{の}'.'賃貸物件情報一覧です。';
			Apm_Bukkenurl::convertSeoText($this->_data['block_text'], $meta_data);
			$this->_params['is_seo'] = 1;
			$this->_data['is_seo']   = 1;
		} else {
			$this->_params['is_seo'] = 0;
		}

		// モデルインスタンス生成
		$this->_model_rstobilist = new Rstobi_Model_RstobiList();
		$this->_model_rstobishop = new Rstobi_Model_RstobiShop();
		$this->_model_common     = new Rstobi_Model_Common();
		$this->_model_converte   = new Rstobi_Model_Converte();

		// PCサイトの場合はヘッダーフッターなし
		if (!$this->isMobile()) { $this->setXPassThroutgh(); }

		/** 初期処理 **/
		// ページャー用パラメータが足りない場合は、デフォルト設定取得
		$PagerData = $this->_model_rstobi_pager->getDefaultPager();
		if(!$this->_model_search_common->checkvalue($this->_params, "page"))
		{
			$this->_params['page'] = $PagerData['page'];
		}
		// お気に入り物件一覧は10件固定
		if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FAVORITE)
		{
			$this->_params['dispCount'] = "10";
		}
		else
		{
			if(!$this->_model_search_common->checkvalue($this->_params, "dispCount"))
			{
				$this->_params['dispCount'] = $PagerData['dispCount'];
			}
		}
		if(!$this->_model_search_common->checkvalue($this->_params, "shop_page"))
		{
			$this->_params['shop_page'] = $PagerData['page'];
		}

		// OEMフラグ取得
		$this->_data['OemFlg'] = $this->_model_rstobi_common->isOem($this->_params);

		$this->_data['params'] = &$this->_params;

		// 並び替え情報取得
		$this->_data['dispSortData'] = $this->_model_rstobi_sort->getDispSortData($this->_params);
		$SortData = $this->_model_rstobi_sort->getSortData($this->_params);
		$this->_params['SORT_COLUMN']           = $SortData['SORT_COLUMN'];
		$this->_params['SORT_ORDER']            = $SortData['SORT_ORDER'];
		$this->_params['SORT_COLUMN_FOR_FREE']  = $SortData['SORT_COLUMN_FOR_FREE'];

		// 社宅控除率
		if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_SYATAKU)
		{
			$shatakuKoujyoritsu = $this->_model_rstobi_common->getShatakuKoujyoritsu($this->_params);
			$this->_data['shatakuKoujyoritsu'] = (100- floor( $shatakuKoujyoritsu )) / 100 * 1.05;

			// 2011/10/27 法人リクエストバナー非表示対応
			// 社宅の場合はComIdをセットする
			$this->_data['ComId'] = $this->_params['ComId'];
		}

		/** 表示形式により、使用するBL 及び テンプレートを切り替える **/
		/*    ※物件一覧表示形式が渡されなかった場合は、「一覧から部屋検索」を表示する
		/*
		/*	  物件一覧表示区分（RstobiDispKbn）
		/*		NORMAL(01)：一覧から部屋検索
		/*		PHOTO (02)：写真から部屋検索
		/*		SHOP  (03)：店舗から部屋検索
		 */

		// フリーワード検索で検索キーワードがない場合
		if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FREEWORD  && $this->_params['freeword'] == "")
		{
			// 検索キーワードなしテンプレート
			$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/not_keyword_for_freeword.tpl';
			Apm_Util::outputXPassThroutgh();

		}
		// 加盟店HP作成契約
		else if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_HP_KEIYAKU )
		{
			// 加盟店HP作成契約テンプレート
			$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/hp_keiyaku.tpl';
			Apm_Util::outputXPassThroutgh();

			// 契約情報取得
			$this->_data['Keiayaku'] = $this->_model_common->getHpKeiyakuJoho($this->_params);
			if(empty($this->_params['shubetsu'])){$this->_params['shubetsu'] = 0;}

			// 加盟店HP用ﾃﾞｻﾞｲﾝ変数設定処理
			$this->_model_converte->S_SetDesignValue($this->_data,$this->_data['Keiayaku']['T73_DESIGN_KUBUN'],$this->_data['Keiayaku']['T73_COLOR_KUBUN']);

			// 物件データ（一覧）の取得
			$workBukenData = $this->_model_rstobilist->getBukenDataForList($this->_params, Apm_Config_Search::GETBUKENTYPE_LIST,0,100);

			if(!empty($workBukenData)){
				// 表示用にデータをコンバート
				$this->_model_converte->dataConverteForBuken(&$workBukenData, $this->_params);
			}
			$this->_data['buken_list'] = &$workBukenData[0];
			$this->_data['buken_list_hp_keiyaku'] = $this->_hp_keiyaku_helper->getBlock($this->_data);
		}
		// 一覧から部屋検索・写真から部屋検索
		else if(!isset($this->_params['RstobiDispType']) or
		   $this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_NORMAL or
		   $this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_PHOTO)
		{
			// 物件データ（一覧）の件数取得
			$buken_count = $this->_model_rstobilist->getBukenDataForList($this->_params, Apm_Config_Search::GETBUKENTYPE_COUNT);

			// 検索の結果、1件以上物件があった場合
			if($buken_count[0]['BUKEN_COUNT'] > 0)
			{
				// モバイルの場合
				if ($this->isMobile())
				{
					// データ取得範囲を取得
					$this->_data['pager'] = $this->_model_rstobi_pager->getDataFromto($this->_params['start'] ,$this->_params['count']);
				}
				// PCの場合
				else
				{
					// ペイジャー用データを取得
					$this->_data['pager'] = $this->_model_rstobi_pager->getPagerData($buken_count[0]['BUKEN_COUNT'], $this->_params['page'], $this->_params['dispCount']);
				}

/* 2011/06/22 SEO対策:Ajax削除 静的URL生成 */
				//SEO対象の場合、URLを生成する
				if ($this->_is_seo) {
					$this->_data['static_url'] = Apm_Bukkenurl::getStaticUrlForRstobi($this->_params, $this->_data['pager']);
				}

				// 物件データ（一覧）の取得
				$workBukenData = $this->_model_rstobilist->getBukenDataForList($this->_params, Apm_Config_Search::GETBUKENTYPE_LIST, $this->_data['pager']['bukenCountFrom'] ,$this->_data['pager']['bukenCountTo'], $buken_count[0]['BUKEN_COUNT']);

				// 物件データをランダム順に並び替え
				$this->_model_converte->randomSortBukendata(&$workBukenData, $this->_params);

				// モバイルの場合
				if ($this->isMobile())
				{
					$this->_model_converte->dataConverteForBuken(&$workBukenData, $this->_params, true);
					// XML出力
					$this->setApiData($workBukenData, $buken_count[0]['BUKEN_COUNT']);
					$this->display();
				}

                // 通勤・通学時間検索の場合、指定データを置き換える処理を行う
                if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_TUKINTUGAKU){
					$workBukenData = $this->_model_converte->updateTukintugakuForTargetData($workBukenData);
                }

				// 表示用にデータをコンバート
				//$workBukenData = $this->_model_converte->dataConverteForBuken($workBukenData, $this->_params);
				$this->_model_converte->dataConverteForBuken(&$workBukenData, $this->_params);

				// お気に入り物件一覧用テンプレート
				if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FAVORITE)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_favorite.tpl';
					$rstlistTplType = 'rstlist_20';
				}
				// 表示件数に応じて、テンプレートを切り替える
				else if(count($workBukenData[2]) <> 0)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_60.tpl';
					$rstlistTplType = 'rstlist_60';
				}
				else if(count($workBukenData[1]) <> 0)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_40.tpl';
					$rstlistTplType = 'rstlist_40';
				}
				else
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_20.tpl';
					$rstlistTplType = 'rstlist_20';
				}

//2011/02/24 遅延表示対応 Start
				// 遅延表示用に物件データを整理
				$this->_model_converte->convertForDelaydisp(&$workBukenData);

				// 物件一覧ブロック生成
				if($this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_NORMAL)
				{
					$this->_rstobi_block_helper = $this->getApmHelper('rstobi_list_block.tpl');

					// 一覧から部屋検索
					$this->_data['dataBlockId'] = 'dataBlock_0';
					$this->_data['scrollPointId'] = 'scrollPoint_0';
					$this->_data['buken_list'] = &$workBukenData[0];
					$this->_data['buken_list_20'] = $this->_rstobi_list_helper->getBlock($this->_data);
					if($rstlistTplType == 'rstlist_40' || $rstlistTplType == 'rstlist_60')
					{
						$this->_data['dataBlockId'] = 'dataBlock_1';
						$this->_data['scrollPointId'] = 'scrollPoint_1';
						$this->_data['buken_list'] = array();
						$this->_data['buken_list_40'] = $this->_rstobi_list_helper->getBlock($this->_data);
					}
					if($rstlistTplType == 'rstlist_60')
					{
						$this->_data['dataBlockId'] = 'dataBlock_2';
						$this->_data['scrollPointId'] = 'scrollPoint_2';
						$this->_data['buken_list'] = array();
						$this->_data['buken_list_60'] = $this->_rstobi_list_helper->getBlock($this->_data);
					}
				}
				else
				{
					$this->_rstobi_block_helper = $this->getApmHelper('rstobi_photo_block.tpl');

					// 写真から部屋検索
					$this->_data['dataBlockId'] = 'dataBlock_0';
					$this->_data['scrollPointId'] = 'scrollPoint_0';
					$this->_data['buken_list'] = &$workBukenData[0];
					$this->_data['buken_list_20'] = $this->_rstobi_photo_helper->getBlock($this->_data);
					if($rstlistTplType == 'rstlist_40' || $rstlistTplType == 'rstlist_60')
					{
						$this->_data['dataBlockId'] = 'dataBlock_1';
						$this->_data['scrollPointId'] = 'scrollPoint_1';
						$this->_data['buken_list'] = array();
						$this->_data['buken_list_40'] = $this->_rstobi_photo_helper->getBlock($this->_data);
					}
					if($rstlistTplType == 'rstlist_60')
					{
						$this->_data['dataBlockId'] = 'dataBlock_2';
						$this->_data['scrollPointId'] = 'scrollPoint_2';
						$this->_data['buken_list'] = array();
						$this->_data['buken_list_60'] = $this->_rstobi_photo_helper->getBlock($this->_data);
					}
				}

				//// 物件一覧ブロック生成
				//if($this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_NORMAL)
				//{
				//	// 一覧から部屋検索
				//	$this->_data['buken_list'] = &$workBukenData[0];
				//	$this->_data['buken_list_20'] = $this->_rstobi_list_helper->getBlock($this->_data);
				//	$this->_data['buken_list'] = &$workBukenData[1];
				//	$this->_data['buken_list_40'] = $this->_rstobi_list_helper->getBlock($this->_data);
				//	$this->_data['buken_list'] = &$workBukenData[2];
				//	$this->_data['buken_list_60'] = $this->_rstobi_list_helper->getBlock($this->_data);
				//}
				//else
				//{
				//	// 写真から部屋検索
				//	$this->_data['buken_list'] = &$workBukenData[0];
				//	$this->_data['buken_list_20'] = $this->_rstobi_photo_helper->getBlock($this->_data);
				//	$this->_data['buken_list'] = &$workBukenData[1];
				//	$this->_data['buken_list_40'] = $this->_rstobi_photo_helper->getBlock($this->_data);
				//	$this->_data['buken_list'] = &$workBukenData[2];
				//	$this->_data['buken_list_60'] = $this->_rstobi_photo_helper->getBlock($this->_data);
				//}
//2011/02/24 遅延表示対応 End

				// ブロック生成
				$this->_data['pager']				  = $this->_rstobi_pager_helper->getBlock($this->_data);  // ペイジャー
				$this->_data['sort']                  = $this->_rstobi_new_sort_helper->getBlock($this->_data);   // 並び替え
				$this->_data['buken_sort']            = $this->_rstobi_sort_helper->getBlock($this->_data);   // 並び替え
				$this->_data['buken_sort_bottom']     = $this->_rstobi_sort_btm_helper->getBlock($this->_data);  // 並び替え（最下部用）
				$this->_data['guard_comment']		  = $this->_guard_comment_helper->getBlock($this->_data); // ガード文言
				$this->_data['meyasu_tinryo_comment'] = $this->_meyasu_tinryo_helper->getBlock($this->_data); // めやす賃料説明文
				$this->_data['mypage_property']       = $this->_mypage_property_helper->getBlock($this->_data);	// 制御ボタン

//2011/02/24 遅延表示対応 Start
				$bukenHTML = array();  // 物件情報のHTML格納用
				$bukenHTMLIndex = 0;
				$firstDispCount = Apm_Config_Rstobi::FIRST_DISP_COUNT;

				// scripts下のテンプレートを使用してHTMLを作成
				foreach($this->_data as $key => $value){
					$this->view->$key = $value;
				}
				//HTML内の改行とタブを削除して変数に詰める
				$bukenHTML[$bukenHTMLIndex++] = preg_replace('/(\r\n)|(\t)/','',$this->view->render($dispName));

				for($i=1; $i<count($workBukenData); $i++)
				{
					$this->_data['bukenDataIndex'] = ++$firstDispCount;
					$this->_data['bukenDataBlock'] = &$workBukenData[$i];
					$bukenHTML[$bukenHTMLIndex++] = preg_replace('/(\r\n)|(\t)/','',$this->_rstobi_block_helper->getBlock($this->_data));
				}

				// モバイル以外の場合
				if (!$this->isMobile())
				{
					// XML形式で画面へ返却
					Apm_Util::outputXmlData($bukenHTML);
					exit;
				}

//2011/02/24 遅延表示対応 End
			}
			else
			{
				// モバイルの場合
				if ($this->isMobile())
				{
					// XML出力
					$this->setApiData($this->_data['buken_list']);
					//$this->_display_path = $dispName;
					//exit;
				}

				// 「該当する物件が見つかりませんでした。」表示
				if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FREEWORD){
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/not_data_for_freeword.tpl';
				}
				else
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/not_data.tpl';
					// 通常サイトで住所検索、沿線・駅検索の場合、物件リクエストへのリンクを表示
					if (!$this->_model_rstobi_common->isOem($this->_params)
					 && ($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUSYO || $this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_ENSENEKI))
					 {
					 	$this->_data['request_flag'] = "1";
					 }
				}
				Apm_Util::outputXPassThroutgh();

				if(!isset($this->_params['RstobiDispType']) or
		   		   $this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_NORMAL or
				   $this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_PHOTO)
				{
					// scripts下のテンプレートを使用してHTMLを作成
					foreach($this->_data as $key => $value){
						$this->view->$key = $value;
					}
					//HTML内の改行とタブを削除して変数に詰める
					$bukenHTML[$bukenHTMLIndex++] = preg_replace('/(\r\n)|(\t)/','',$this->view->render($dispName));

					// モバイル以外の場合
					if (!$this->isMobile())
					{
						// XML形式で画面へ返却
						Apm_Util::outputXmlData($bukenHTML);
						exit;
					}
				}
			}
		}
		// 店舗から部屋検索
		else if($this->_params['RstobiDispType'] == Apm_Config_Search::LISTTYPE_SHOP)
		{
			// 店舗件数取得
			$shop_count = $this->_model_rstobishop->getBukenDataForShop($this->_params, Apm_Config_Search::GETBUKENTYPE_COUNT);

			// 検索の結果、1件以上物件があった場合
			if($shop_count[0]['SHOP_COUNT'] > 0)
			{
				// ペイジャー
				$this->_data['pager'] = $this->_model_rstobi_pager->getPagerData($shop_count[0]['SHOP_COUNT'], $this->_params['shop_page'], $this->_params['dispCount']);

/* 2011/06/22 SEO対策:Ajax削除 静的URL生成 */
				//SEO対象の場合、URLを生成する
				if ($this->_is_seo) {
					$this->_data['static_url'] = Apm_Bukkenurl::getStaticUrlForRstobi($this->_params, $this->_data['pager']);
				}

				// 店舗一覧取得
				$this->_data['buken_list'] = $this->_model_rstobishop->getBukenDataForShop($this->_params, Apm_Config_Search::GETBUKENTYPE_LIST, $this->_data['pager']['bukenCountFrom'] ,$this->_data['pager']['bukenCountTo']);

				// 表示用にデータをコンバート
				$workBukenData = $this->_model_converte->dataConverteForShop($this->_data['buken_list'], $this->_params, $this->_imageurl);

				// お気に入り物件一覧用テンプレート
				if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FAVORITE)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_favorite.tpl';
				}
				// 表示件数に応じて、テンプレートを切り替える
				else if(count($workBukenData[2]) <> 0)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_60.tpl';
				}
				else if(count($workBukenData[1]) <> 0)
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_40.tpl';
				}
				else
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/rstlist_20.tpl';
				}

				// OEM用URL
				$this->_data['url']['tenpo_oem_jump'] = Apm_Config_Shop::URL_TENPO_OEM_JUMP;
				$this->_data['url']['shop_detail']    = Apm_Config_Shop::URL_DETAIL;

				// 物件一覧ブロック生成
				$this->_data['buken_list'] = &$workBukenData[0];
				$this->_data['buken_list_20'] = $this->_rstobi_shop_helper->getBlock($this->_data);
				$this->_data['buken_list'] = &$workBukenData[1];
				$this->_data['buken_list_40'] = $this->_rstobi_shop_helper->getBlock($this->_data);
				$this->_data['buken_list'] = &$workBukenData[2];
				$this->_data['buken_list_60'] = $this->_rstobi_shop_helper->getBlock($this->_data);

				// ブロック生成
				$this->_data['pager']         = $this->_rstobi_pager_helper->getBlock($this->_data);  // ペイジャー
				$this->_data['guard_comment'] = $this->_guard_comment_helper->getBlock($this->_data); //ガード文言
			}
			else
			{
				// 「該当する物件が見つかりませんでした。」表示
				if($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_FREEWORD){
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/not_data_for_freeword.tpl';
				}
				else
				{
					$dispName = APPLICATION_PATH . '/modules/rstobi/views/scripts/not_data.tpl';
					// 通常サイトで住所検索、沿線・駅検索の場合、物件リクエストへのリンクを表示
					if (!$this->_model_rstobi_common->isOem($this->_params)
					 && ($this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUSYO || $this->_params['SrhKbn'] == Apm_Config_Search::SRHKBN_ENSENEKI))
					 {
					 	$this->_data['request_flag'] = "1";
					 }
				}
				Apm_Util::outputXPassThroutgh();
			}
		}

		// 表示
		$this->_display_path = $dispName;
	}
}
?>
